package com.bifang.common.vo.task;

import com.bifang.common.vo.BaseVO;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import java.util.List;
import lombok.Data;

/**
 * 运行时任务节点表
 *
 * @author chenzh
 * @since 2020-11-24
 */
@Data
@ApiModel(value = "ActRuTask对象", description = "运行时任务节点表")
public class TaskVO extends BaseVO {

    @ApiModelProperty(value = "主键")
    private String id;

    @ApiModelProperty(value = "版本号 表示数据库表更新次数")
    private Integer rev;

    @ApiModelProperty(value = "执行实例ID")
    private String executionId;

    @ApiModelProperty(value = "流程实例ID 一个流程实例不管有多少条分支实例，这个ID都是一致的")
    private String procInstId;

    @ApiModelProperty(value = "流程定义ID（ACT_RE_PROCDEF）")
    private String procDefId;

    @ApiModelProperty(value = "任务定义id")
    private String taskDefId;

    private String scopeId;

    private String subScopeId;

    private String scopeType;

    private String scopeDefinitionId;

    private String propagatedStageInstId;

    @ApiModelProperty(value = "名称")
    private String name;

    @ApiModelProperty(value = "父任务ID")
    private String parentTaskId;

    @ApiModelProperty(value = "描述")
    private String description;

    @ApiModelProperty(value = "任务定义标识")
    private String taskDefKey;

    @ApiModelProperty(value = "任务拥有人")
    private String owner;

    @ApiModelProperty(value = "经办人 签收人或者委托人")
    private String assignee;

    @ApiModelProperty(value = "委托状态 PENDING 委托中， RESOLVED已处理")
    private String delegation;

    @ApiModelProperty(value = "优先级")
    private Integer priority;

    @ApiModelProperty(value = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;

    @ApiModelProperty(value = "截止时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date dueDate;

    @ApiModelProperty(value = "分类")
    private String category;

    @ApiModelProperty(value = "挂起状态")
    private Integer suspensionState;

    @ApiModelProperty(value = "租户ID")
    private String tenantId;

    @ApiModelProperty(value = "表单标识")
    private String formKey;

    @ApiModelProperty(value = "签收时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date claimTime;

    private Integer isCountEnabled;

    private Integer varCount;

    private Integer idLinkCount;

    private Integer subTaskCount;

    @ApiModelProperty(value = "业务类型")
    private String operationType;

    @ApiModelProperty(value = "业务名称")
    private String operationName;

    @ApiModelProperty(value = "处理人姓名")
    private String authFullName;

    @ApiModelProperty(value = "处理人用户名")
    private String authUserName;

    @ApiModelProperty(value = "申请人类型")
    private String applicantType;

    @ApiModelProperty(value = "申请人类型")
    private String applicantTypeName;

    @ApiModelProperty(value = "申请人id")
    private String applicantId;

    @ApiModelProperty(value = "申请人名称")
    private String applicantName;

    @ApiModelProperty(value = "申请时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date applicantTime;

    @ApiModelProperty(value = "任务拥有者类型 1个人 2组织 3角色 4 用户组")
    private String ownerType;

    @ApiModelProperty(value = "任务拥有者类型对应id")
    private String ownerId;

    @ApiModelProperty(value = "流程节点定义参数id")
    private String flowNodeId;

    @ApiModelProperty(value = "任务状态 wait_claim待签收 wait_complete待办 finish 已办")
    private String status;

    @ApiModelProperty(value = "任务状态中文")
    private String statusName;

    @ApiModelProperty(value = "摘要")
    private String remarks;

    @ApiModelProperty(value = "签收人类型 1个人 2组织 3角色 4 用户组")
    private String assigneeType;

    @ApiModelProperty(value = "签收人类型对应id")
    private String assigneeId;

    @ApiModelProperty(value = "签收人类型对应name")
    private String assigneeIdName;

    @ApiModelProperty(value = "任务标签")
    private List<String> tagList;

    @ApiModelProperty(value = "用户备注")
    private String userRemarks;
}
